The present invention relates to system Basic Input Output Systems (BIOS). It is well-known in the computer arts that a BIOS program is provided, particularly for personal computers, to manage the intricate and critical operations of testing and initializing system hardware and, in general, preparing the computer and its connected peripherals for operation. Part of this procedure is widely known as a Power-On Self Test (POST) sequence. Beyond the POST procedure, the BIOS directs Boot operations, typically from a designated Boot device, such as a connected hard disk drive, and after Boot BIOS routines are accessed as needed to support operations such as communication between the connected digital devices that make up the computer system.
In early stages of PC development a relatively small, non-volatile, read-only memory (ROM) chip was more than adequate for system BIOS, and the relatively slow access to ROM was also adequate. As PC technology has developed to much faster CPUs and a wide range of ever more powerful and sophisticated peripheral devices, BIOS development has been forced to keep pace. BIOS routines have become much larger than early systems, and high operating speed has become necessary.
As a result of system development it is now common in state-of-the-art systems for BIOS to be compressed in a ROM chip, and for BIOS routines to be shadowed to system random-access memory (RAM) where the routines may be accessed and executed and much higher speeds than is possible running directly from ROM.
At the same time that BIOS routines have been enhanced and further developed for more sophisticated and powerful PCs, there has been parallel development in ROM chips. One such development is known as Flash ROM. Flash ROM is non-volatile IC memory that may be erased, either as a whole or in specific blocks, and overwritten with new memory values. BIOS is now provided in high-end PCs in these Flash ROM chips, providing new advantages, such as an ability to address system bugs in the field. BIOS can hence be "re-flashed" in the field to provide a new version, for example, such as by downloading a new version from the Internet, and re-flashing the existing BIOS ROM with the new version.
In a related development, flash ROM chips have been made larger and faster, and for various reasons related to economy of scale it has become uneconomic to make small flash ROM chips. At the time of the present patent application flash ROM chips are readily available in sizes of, for example, 1 mega-bit, (1 Mb), and 2 and 4 Mb and larger. These sizes relate to the more common byte-related memory capacity designation by a factor of eight. A four Mb Flash ROM the has a code capacity of 512 kilo-byte (KB).
As a consequence of the availability of relatively inexpensive, large flash ROM chips, and the fact that compressed code is now common in BIOS, it is quite common at the time of the present application for system BIOS in Flash ROM to occupy considerably less than the total memory capacity of the chip. At the same time, because rapid development of new peripherals and expanded functionality of others, such as video displays, which are now high resolution and in color, there is a need for initialization of many devices at system start up, and initialization of all the devices cannot be included in the system BIOS all of the devices. Many such devices (VGA adapters, for example) therefore have BIOS functions provided by the manufacturers of the devices.
With the use of larger ROM chips, and particularly with Flash ROM, it is now possible for original-equipment manufacturers (OEMs), Value-Added Resellers (VARs) and the like to use extra memory capacity in a ROM chip storing BIOS functions for providing BIOS functions for peripherals, and also other routines, such as, for example, pre-boot security routines. With the present state of the art, however, it is necessary that a third party cooperate closely with a BIOS provider to add to and enhance the functionality of a BIOS chip. The partitioning, addressing, size, and other characteristics of the chip have to be known by the third party, and the structure and storage estate of the resident code has to be known as well.
What is clearly needed, and what is provided by the present invention is a BIOS system that allows third parties to add to and to customize a BIOS ROM (BIOS extensions) without having to deal with all of the detailed characteristics of the chip and code stored on the chip. In such a system, OEMs, for example, may quickly, easily, and inexpensively provide initialization functions for different mixes of peripheral devices, and to also add BIOS plug-ins for other functions that may provide added value if performed during pre-boot operations and the like.